Un espacio de color es una gama de colores que permite representar una imagen. Este notebook registra los cambios de espacios partiendo desde el modelo de color BGR hasta espacios de color como gris, BGRA, YCrCb , XYZ, HSV, Lab, Luv, HLS, YUV en python y openCV usando la función cvtColor.
son la siglas para red green blue alpha (en español: alfa verde azul rojo). Suele describirse como un espacio de color, aunque en realidad es la combinación de un modelo de color RGB con un cuarto adicional denominado alpha channel (en español: canal alfa). El alfa indica la opacidad de cada píxel y permite que una imagen se combine con otras utilizando la composición alfa, con áreas transparentes y suavizado de bordes en las regiones opacas.
El término no define qué espacio de color RGB se está utilizando. Tampoco indica si los colores son premultiplicados o no por el valor alfa, y si lo son, no indica en qué espacio de color se realizó la multiplicación previa. Esto significa que se necesita algo más que el "RGBA" para determinar cómo manejar una imagen.
Y'CBCR no es un espacio de color absoluto, sino una forma de codificar información RGB. El color que se muestra depende de la combinación de colores primario RGB usados para mostrar la señal. Por lo tanto, un valor expresado como Y'CBCR es predecible solo si se usa la cromaticidad de los colores del estándar RGB.
En este modelo Y significa luminosidad, Z es aproximadamente igual al estímulo de azul (conos S), y X es una mezcla tendiente a la curva de sensibilidad del rojo al verde (conos L y M). De esta manera, XYZ puede confundirse con las respuestas de los conos en RGB. Sin embargo, en el espacio de color CIE XYZ, los valores de triple estímulo no equivalen a las respuestas S, M y L del ojo humano, incluso teniendo en cuenta que X y Z son aproximadamente rojo y azul; realmente, deben verse como parámetros 'derivados' de los colores rojo, verde y azul.
HSV es un método de representación de puntos del espacio de color RGB en un cono invertido
El propósito es producir un espacio de color que sea más "perceptivamente lineal" que otros espacios de color. Perceptivamente lineal significa que un cambio de la misma cantidad en un valor de color debe producir un cambio casi de la misma importancia visual. Lo anterior puede mejorar la reproducción de tonos cuando se almacenan colores en valores de precisión limitada.
En colorimetría, el espacio de color CIE 1976 L , u , v *, comúnmente conocido por su abreviatura CIELUV, es un espacio de color adoptado por la Comisión Internacional de Iluminación (CIE) en 1976, como una transformación simple de calcular de el espacio de color CIE XYZ de 1931, pero que intentó la uniformidad de percepción. Se utiliza ampliamente para aplicaciones como gráficos por computadora que se ocupan de luces de colores. Aunque las mezclas de aditivos de luces de diferentes colores caerán en una línea en el diagrama de cromaticidad uniforme de CIELUV (denominado CIE 1976 UCS), tales mezclas de aditivos no, contrariamente a la creencia popular, caerán a lo largo de una línea en el espacio de color CIELUV a menos que las mezclas sean constantes en ligereza.
El modelo HSL se representa gráficamente como un cono doble o un doble hexágono. Los dos vértices en el modelo HSL se corresponden con el blanco y el negro, el ángulo se corresponde con el matiz, la distancia al eje con la saturación y la distancia al eje blanco-negro se corresponde a la luminancia.
YUV es un espacio de color usado habitualmente como parte de un sistema de procesamiento de imagen en color. Una imagen o vídeo en color se codifica en este espacio de color teniendo en cuenta la percepción humana, lo que permite un ancho de banda reducido para los componentes de diferencia de color o crominancia, de esta forma, hace que los errores de transmisión o las imperfecciones de compresión se oculten más eficientemente a la percepción humana que usando una representación RGB directa. Otros espacios de color tienen propiedades similares y la principal razón para implementar o investigar las propiedades de YUV o de su similar, Y'UV se encuentran tanto las de interactuar con televisión analógica o digital o con equipo fotográfico que sea conforme a ciertos estándares de este espacio.
El ámbito de los términos YUV, Y'UV, YCbCr y YPbPr es a veces ambiguo y coincidente. Históricamente, los espacios YUV y Y'UV fueron usados para la codificación analógica específica del color en sistemas de televisión, mientras que YCbCr fue usado para la codificación digital adecuada de la información de color para la compresión y transmisión de video e imagen fija, tal como ocurre con las normas MPEG y JPEG, respectivamente. Hoy en día, el término es comúnmente usado en la industria de la computación para describir los formatos de archivo que son codificados usando el espacio de color YCbCr.
El modelo Y'UV, usado en los sistemas de vídeo compuesto de color PAL y NTSC, define un espacio de color en términos de una componente de luma y dos componentes de crominancia (UV). Los sistemas monocromáticos anteriores usaban solamente la información de luma. La información de color fue añadida por separado mediante la modulación de una subportadora, de modo que un receptor de blanco y negro pudiera ser capaz de recibir una transmisión de color en el formato monocromático propio del equipo. El símbolo Y' denota la señal de luma con corrección gamma.
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('gatitos.jpg',-1)
ima = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
img2 = cv2.cvtColor(ima,cv2.COLOR_RGB2GRAY)
img3 = cv2.cvtColor(ima,cv2.COLOR_BGR2YCrCb)
img4 = cv2.cvtColor(ima,cv2.COLOR_BGR2HSV)
img5 = cv2.cvtColor(ima,cv2.COLOR_BGR2HSV_FULL)
img6 = cv2.cvtColor(ima,cv2.COLOR_BGR2Lab)
img7 = cv2.cvtColor(ima,cv2.COLOR_BGR2Luv)
img8 = cv2.cvtColor(ima,cv2.COLOR_BGR2HLS)
img9 = cv2.cvtColor(ima,cv2.COLOR_BGR2HLS_FULL)
img10 = cv2.cvtColor(ima,cv2.COLOR_BGR2YUV)
img11 = cv2.cvtColor(ima,cv2.COLOR_BGR2XYZ)
plt.figure(1);
plt.subplot(1,2,1),plt.imshow(ima),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito ')
plt.subplot(1,2,2),plt.imshow(img2,'gray'),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito gris')
plt.subplots_adjust(top=4, bottom=0.1, left=0.10, right=3, hspace=0.1, wspace=0.2)
plt.figure(2);
plt.subplot(1,2,1),plt.imshow(img),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en BGR')
plt.subplot(1,2,2),plt.imshow(img3),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito CrCb')
plt.subplots_adjust(top=4, bottom=0.1, left=0.10, right=3, hspace=0.1, wspace=0.2)
plt.figure(3);
plt.subplot(1,2,1),plt.imshow(img4),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en HSV')
plt.subplot(1,2,2),plt.imshow(img5),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en HSV_FULL')
plt.subplots_adjust(top=4, bottom=0.1, left=0.10, right=3, hspace=0.1, wspace=0.2)
plt.figure(4);
plt.subplot(1,2,1),plt.imshow(img6),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en Lab')
plt.subplot(1,2,2),plt.imshow(img7),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en Luv')
plt.subplots_adjust(top=4, bottom=0.1, left=0.10, right=3, hspace=0.1, wspace=0.2)
plt.figure(5);
plt.subplot(1,2,1),plt.imshow(img8),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en HLS')
plt.subplot(1,2,2),plt.imshow(img9),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en HLS_FULL')
plt.subplots_adjust(top=4, bottom=0.1, left=0.10, right=3, hspace=0.1, wspace=0.2)
plt.figure(6);
plt.subplot(1,2,1),plt.imshow(img10),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en YUV')
plt.subplot(1,2,2),plt.imshow(img11),plt.xticks([]), plt.yticks([]),plt.title('Unos gatito en XYZ')
plt.subplots_adjust(top=4, bottom=0.1, left=0.10, right=3, hspace=0.1, wspace=0.2)
img = cv2.imread('gatitos.jpg')
img2 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY )
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA )
img4 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB )
img5 = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA )
img6 = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb )
img7 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV )
img8 = cv2.cvtColor(img,cv2.COLOR_BGR2HSV_FULL)
img9 = cv2.cvtColor(img,cv2.COLOR_BGR2Lab)
img10 = cv2.cvtColor(img,cv2.COLOR_BGR2Luv)
img11 = cv2.cvtColor(img,cv2.COLOR_BGR2HLS)
img12 = cv2.cvtColor(img,cv2.COLOR_BGR2HLS_FULL)
img13 = cv2.cvtColor(img,cv2.COLOR_BGR2YUV)
img14 = cv2.cvtColor(img,cv2.COLOR_BGR2XYZ)
cv2.imshow('Un gatito GRIS',img2)
cv2.imshow('Un gatito BGRA',img3)
cv2.imshow('Un gatito RGB',img4)
cv2.imshow('Un gatito RGBA',img5)
cv2.imshow('Un gatito YCrCb',img6)
cv2.imshow('Un gatito HSV',img7)
cv2.imshow('Un gatito HSV_FULL',img8)
cv2.imshow('Un gatito Lab',img9)
cv2.imshow('Un gatito Luv',img10)
cv2.imshow('Un gatito HLS',img11)
cv2.imshow('Un gatito HLS_FULL',img12)
cv2.imshow('Un gatito YUV',img13)
cv2.imshow('Un gatito ZYz',img14)
cv2.waitKey(0)
cv2.destroyAllWindows()